package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.service.common.enums.OltpRpcdEnum;
import cc.rengu.oltp.service.model.BizException;

import java.util.Arrays;

/**
 * F60.2.8   Electronic Commerce Identification：电子商务标识（ECI）
 *
 * @author fangminwei
 * @date 2021/4/17
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum F60_2_8_ECIEnum {
    _00("00", "未使用或后续子域存在"),
    _01("01", "进行了银联安全输入模式认证，且持卡人安全信息输入成功"),
    _03("03", "进行了发卡机构SAA直接验证授权模式认证，且SAA验证授权成功"),
    _05("05", "进行了发卡机构SA直接身份认证模式认证，且持卡人身份验证成功"),
    _06("06", "曾尝试进行发卡机构直接身份验证模式认证"),
    _07("07", "未通过CUPSecure安全认证，但采用了信道加密等安全技术"),
    _08("08", "未通过CUPSecure安全认证，且未采用信道加密等安全技术"),
    _09("09", "在无卡自助消费业务中标识发卡机构为自主识别模式"),
    _10("10", "在无卡自助消费业务中标识发卡机构为辅助识别模式"),
    _80("80", "保留使用，参见《对公预授权技术实施指南》/拒绝授权"),
    _81("81", "保留使用，参见《对公预授权技术实施指南》/同意授权"),
    ;

    private String code;
    private String desc;

    F60_2_8_ECIEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return code + "-" + desc;
    }

    public static F60_2_8_ECIEnum find(String code) {
        F60_2_8_ECIEnum result = Arrays.stream(F60_2_8_ECIEnum.values())
                .filter(e -> e.getCode().equals(code)).findFirst().orElse(null);

        if (result == null) {
            throw new BizException(OltpRpcdEnum.PARAM_IS_EMPTY_OR_NULL.getRespCode(), "找不到对应的枚举信息" + code);
        }
        return result;
    }
}
